package mysql

import (
	"gorm.io/gorm"
	user "shortvideo2zk/common/proto"
)

type Video struct {
	gorm.Model
	UserId int64  `gorm:"type:int" json:"user_id"`
	Title  string `gorm:"type:varchar(20);not null" json:"title"` //标题
	Desc   string `gorm:"type:varchar(200)" json:"desc"`          //描述
	Url    string `gorm:"type:varchar(200)" json:"url"`           //文件链接
	Status int64  `gorm:"type:int;default:1'" json:"status"`      // 1启用 2禁用
}

func (v *Video) CreateVideo(in *user.AddVideoReq) error {
	video := &Video{
		UserId: in.UserId,
		Title:  in.Title,
		Desc:   in.Desc,
		Url:    in.Url,
	}
	err := DB.Create(&video).Error
	if err != nil {
		return err
	}
	return nil
}
func (v *Video) FindVideoByUserId(userId, offset, limit int64) (video []*Video, err error) {
	err = DB.Model(&v).Offset(int(offset)).Limit(int(limit)).Where("user_id=?", userId).Order("createAt desc").Find(&video).Error
	if err != nil {
		return nil, err
	}
	return video, nil
}
func (v *Video) FinVideoByKeyWord(keyWord string) (video []*Video, err error) {
	err = DB.Where("title like ?", "%"+keyWord+"%").Find(&video).Error
	if err != nil {
		return nil, err
	}
	return video, nil
}
func (v *Video) UpdateVideoStatus(id int64, status int64) error {
	return DB.Model(&v).Where("id=?", id).Update("status", status).Error
}
func (v *Video) VideoOrder() (video []*Video, err error) {
	err = DB.Model(&v).Order("createAt desc Or title desc").Find(&video).Error
	if err != nil {
		return nil, err
	}
	return video, nil
}
func (v *Video) DelVideo(id int64) error {
	err := DB.Where("id=?", id).Delete(&Video{}).Error
	if err != nil {
		return err
	}
	return nil
}
